【Python 基础教程 03 类型转换】从隐式到显式:全面理解Python数据类型转换的超详细初学者入门教程 您所在的位置:网站首页 python 转换为集合 【Python 基础教程 03 类型转换】从隐式到显式:全面理解Python数据类型转换的超详细初学者入门教程

【Python 基础教程 03 类型转换】从隐式到显式:全面理解Python数据类型转换的超详细初学者入门教程

2024-01-15 11:35| 来源: 网络整理| 查看: 265

Python3初学者的超详细数据类型转换教程 1. 引言1.1 简述Python数据类型1.2 为什么需要数据类型转换 2. Python数据类型转换的基本原则2.1 隐式类型转换 (Implicit Type Conversion)2.2 显式类型转换 (Explicit Type Conversion) 3. Python内置数据类型转换函数3.1 int(x [,base]):将x转换为一个整数3.2 float(x):将x转换到一个浮点数3.3 complex(real [,imag]):创建一个复数 4. 将对象x转换为不同的字符串格式4.1 repr(x):将对象 x 转换为表达式字符串4.2 eval(str):用来计算在字符串中的有效Python表达式,并返回一个对象 5. 序列类型的转换5.1 tuple(s):将序列s转换为一个元组5.2 list(s):将序列s转换为一个列表5.3 set(s):将序列s转换为一个集合 6. 创建和转换字典6.1 dict(d):创建一个字典6.1.1 dict()与C++ std::map 的对比 7. 无法修改的集合转换7.1 frozenset(s):转换为不可变集合 8. 字符和整数之间的转换 8.1 chr(x):将一个整数转换为一个字符 8.2 ord(x):将一个字符转换为它的整数值 9. Python整数和不同进制字符串之间的转换9.1 整数转换为十六进制字符串(hex)9.2 整数转换为八进制字符串(oct) 10. Python数据类型的高低之分10.1 数据类型的高低之分介绍10.2 不同数据类型之间能否随意转换

1. 引言

在这里插入图片描述

1.1 简述Python数据类型

Python3(Python 版本 3),一种解释型、交互式和面向对象的编程语言,其数据类型包括整数(Integer)、浮点数(Float)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。我们先来详细地了解一下它们。

整数(Integer):Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样。如:1, 100, -8080, 0,等等。

浮点数(Float):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。如:1.23, 3.14, -9.01, 0.0等等。

字符串(String):字符串是以单引号或双引号括起来的任意文本。比如:'hello' 和 "hello"。

列表(List):列表用 [] 括起来,元素之间用 , 隔开,其中的元素的类型可以不同,它支持数字,字符串甚至可以包含列表(即嵌套)。

元组(Tuple):元组类似于列表,元组的元素不能修改,元组写在小括号 () 里,元素之间用 , 隔开。

字典(Dictionary):字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用 , 分割,整个字典包括在花括号 {} 中。

集合(Set):集合(set)是一个无序的不重复元素序列,可以使用 {} 或者 set() 函数创建集合。

在和C++的比较中,我们可以发现Python的数据类型操作相对简单一些。对于C++,数据类型需要在变量定义时显式声明,而Python中的变量不需要显式声明,Python在运行时会自动判断变量的类型。

例如,在C++中,我们可能会这样定义一个整数和一个浮点数:

int i = 10; float f = 20.5;

而在Python中,我们只需要这样做:

i = 10 f = 20.5

这就是动态类型(Dynamic Typing)语言(如Python)和静态类型(Static Typing)语言(如C++)的一个主要区别。

现在我们已经对Python的数据类型有了基本的了解,下一节我们将深入讨论为什么我们需要进行数据类型转换。

1.2 为什么需要数据类型转换

数据类型转换(Data type conversion),是编程中常见的一种操作。这涉及到把一种数据类型转换为另一种。Python是动态类型语言,这意味着你可以在程序运行时改变变量的类型。然而,有时你可能希望一个数据类型的变量被视为另一种数据类型。例如,你可能需要将数字作为字符串处理,或者将复杂的数据结构如列表或字典用作其他类型的容器。这就是为什么我们需要数据类型转换的原因。

举个例子,假设我们正在处理一些从用户输入收集的数据。这些数据通常会以字符串(String)形式提供,但我们可能需要把它们转换为数字(Integer或Float),以便进行数学运算。或者,我们可能有一个列表(List)的元素,我们想要把它转换为一个集合(Set),以消除重复项。这就是类型转换在日常编程任务中的应用。

数据类型转换在C++和Python中的表现形式也有所不同。在C++中,你需要显式地进行类型转换。例如,如果你想将整数转换为浮点数,你需要这样写:

int i = 10; float f = float(i);

然而,在Python中,转换过程相对简单:

i = 10 f = float(i)

这种差异再次突显了Python在数据类型转换上的灵活性和易用性。接下来,我们将详细探讨隐式和显式类型转换,以及如何在Python中使用内置函数进行类型转换。

2. Python数据类型转换的基本原则 2.1 隐式类型转换 (Implicit Type Conversion)

在Python中,隐式类型转换 (Implicit Type Conversion),也被称为类型升级 (type promotion),是Python解释器自动执行的过程。这是为了避免数据类型之间的冲突,并确保代码的正确执行。当你在操作数之间执行运算,Python解释器可以自动将一个或多个操作数从一种类型转换为另一种类型。

不同于C/C++,Python的隐式类型转换规则简洁明了。考虑下面的例子:

num_int = 123 # 整数类型 (Integer) num_flo = 1.23 # 浮点类型 (Floating point) num_new = num_int + num_flo print("datatype of num_int:",type(num_int)) print("datatype of num_flo:",type(num_flo)) print("Value of num_new:",num_new) print("datatype of num_new:",type(num_new))

当运行上述代码时,num_int和num_flo两种不同的类型尝试相加。Python解释器会自动将num_int从整数类型 (int) 转换为浮点类型 (float),然后进行加法运算。

这种情况在C/C++中会造成数据精度的损失,因为C/C++不会自动进行这种类型提升。

语法解析:在描述这种类型转换时,我们可以说 “The Python interpreter implicitly upcasts from integer to float when different types are attempted for an arithmetic operation”(Python解释器在尝试进行不同类型的算术运算时,会隐式地从整数升级到浮点数)。

这里使用了"upcasts"一词,它是一个行话,常常用来描述类型从“较低级”向“较高级”转变的情况。在这个上下文中,“较低级”的类型(如整数)会被转换为“较高级”的类型(如浮点数)。

在《Fluent Python》这本名著中,作者Luciano Ramalho深入探讨了Python的类型系统,并详细解释了Python如何在不同情况下处理类型转换。他提到:“尽管Python是动态类型的语言,但是Python的类型转换比人们常常想象的要复杂许多。” 推荐大家去读一下这本书,理解Python复杂但有用的类型系统。

接下来,让我们在Markdown表格中总结一下Python和C++在隐式类型转换中的主要差异。

动作PythonC++隐式类型转换自动处理,防止类型冲突可能会造成精度损失处理不同类型的运算类型自动提升,如int变为float不会自动类型提升安全性高(因为类型自动转换)较低(可能导致数据精度损失)

以上就是隐式类型转换在Python和C++之间的一些主要差异。虽然两种语言在处理类型转换时采取的策略有所不同,但理解这些差异对于编程是非常重要的,特别是对于需要在Python和C++之间切换的程序员。

2.2 显式类型转换 (Explicit Type Conversion)

在Python中,显式类型转换(Explicit Type Conversion),也被称为类型强制转换(Type Casting)或类型转化(Type Conversion),是指程序员直接使用内置函数来改变数据类型的过程。这与隐式类型转换相对,因为隐式类型转换是由Python解释器自动完成的。

Python提供了一些内置函数,如int(), float(), str(), list()等,这些函数可以改变数据的类型。下面我们将通过一些示例来了解如何进行显式类型转换:

num_int = 123 # 整数类型 num_str = "456" # 字符串类型 # 使用 int() 函数进行类型转换 num_str = int(num_str) print("Data type of num_str after Type Casting:",type(num_str)) num_sum = num_int + num_str print("Sum of num_int and num_str:",num_sum) print("Data type of the sum:",type(num_sum))

在这个例子中,我们先创建了一个整数(num_int)和一个字符串(num_str)。然后,我们使用了int()函数将字符串转换成了整数。最后,我们成功地将转换后的num_str和num_int相加,得到了一个整数的和。

在C++中,程序员也可以使用强制类型转换来改变变量的数据类型,但是这通常是一种危险的做法,因为它可能会导致未定义的行为。

语法解析:在描述这种类型转换时,我们可以说 “In Python, we can change the type of a variable explicitly by using built-in functions like int(), float(), etc.”(在Python中,我们可以通过使用内置函数,如int(), float()等,显式地改变变量的类型)。

在《Effective Python: 59 Specific Ways to Write Better Python》一书中,作者Brett Slatkin强调了理解并掌握Python数据类型转换的重要性,并通过一些实际的示例和案例深入解释了这个概念。这本书是Python编程者必读的一本书,我强烈推荐你去阅读。

我们再来看一下Python和C++在显式类型转换上的对比:

动作PythonC++显式类型转换通过内置函数进行通过强制类型转换进行安全性相对较高,会抛出异常可能会导致未定义的行为扩展性内置函数丰富,应用广泛基于静态类型,转换方式有限

了解Python和C++在显式类型转换上的区别,可以帮助我们在编程中更好地理解和使用这两种语言。

3. Python内置数据类型转换函数 3.1 int(x [,base]):将x转换为一个整数

在Python中,我们有一个内置函数int() (整型函数),它被用来将其他数据类型转换为整数。其函数原型为int(x, base=10),其中x可以是字符串或数值,base表示转换的基数,默认为十进制。

在Python代码中,我们可以使用这个函数来进行转换,例如:

x = 3.1415 int_x = int(x) print(int_x) # Output: 3

在上述例子中,我们将浮点数 (float) 3.1415 转换为了整数 (integer) 3。请注意,int()函数是向下取整,而非四舍五入。

现在,如果我们想要转换一个二进制的字符串,我们可以这样做:

x = "1011" int_x = int(x, 2) print(int_x) # Output: 11

在这个例子中,我们将二进制的字符串 “1011” 转换为了整数 11。

相较于C/C++,Python的int()函数更加灵活,可以处理字符串和数字,同时还可以处理不同的数制基数。

如果你正在和其他人讨论这个话题,你可以这样表述: “The int() function in Python can convert other types of data into integers (在Python中,int()函数可以将其他类型的数据转化为整数)。” 这个句子在美式英语中完全符合语法规则。

当引用《Fluent Python》这本书时,作者Luciano Ramalho提到了Python的int()函数是如何利用Python的动态类型(dynamic typing)特性来实现灵活的类型转换,这也是Python相比于C/C++的一个优点。从源码层面来看,Python的int()函数实际上是调用了Python内部的PyNumber_Long()函数来实现整数转换,这个函数会根据输入的数据类型选择不同的转换方法。

下面是一个对比表格,列出了Python和C/C++在整型转换上的不同:

特性/语言PythonC/C++函数int(x, base=10)(int)x输入类型字符串、数字数字能否处理不同数制基数是否

希望这些信息能帮助你理解Python的int()函数和它是如何与C/C++在整型转换上产生不同的。

3.2 float(x):将x转换到一个浮点数

Python的内置函数float() (浮点型函数)用于将其他数据类型转换为浮点数。其函数原型为 float(x),其中x可以是字符串,整数或者其他数值类型。

以下是Python代码中float()函数的使用示例:

x = "3.14" float_x = float(x) print(float_x) # Output: 3.14

在这个示例中,我们将字符串类型的 “3.14” 转换为了浮点数 3.14。

另一个例子,如果我们有一个整数,并希望将其转换为浮点数:

x = 7 float_x = float(x) print(float_x) # Output: 7.0

在这个例子中,我们将整数 7 转换为了浮点数 7.0。

相对于C/C++,Python的float()函数处理能力更强,除了能处理数值类型,也可以将字符串类型转换为浮点数。

在与他人讨论这个话题时,你可以这样表述: "The float() function in Python can convert other types of data into floating point numbers (在Python中,float()函数可以将其他类型的数据转化为浮点数)。"这句话在美式英语中完全符合语法规则。

在《Python Cookbook》这本书中,作者David Beazley和Brian K. Jones讨论了Python的动态类型(dynamic typing)特性,并解释了为什么Python的float()函数能够轻松地处理不同类型的输入数据。在Python的源码中,float()函数调用了内部的PyFloat_FromString()函数来处理字符串到浮点数的转换,而对于数值类型的输入,则调用了PyFloat_FromDouble()函数。

以下是一个对比表格,列出了Python和C/C++在浮点数转换上的不同:

特性/语言PythonC/C++函数float(x)(float)x输入类型字符串、数字数字是否支持字符串转换是否

这些信息应该可以帮助你理解Python的float()函数,以及它在浮点数转换方面与C/C++的差异。

3.3 complex(real [,imag]):创建一个复数

在Python中,complex()函数 (复数函数) 用于创建一个复数,其函数原型为complex(real [,imag]),其中real表示实部,imag表示虚部,若imag未给出,默认值为0。

以下是在Python中使用complex()函数的示例:

x = complex(4, 5) print(x) # Output: (4+5j)

在这个例子中,我们创建了一个复数 4+5j。

C/C++标准库中并不直接提供创建复数的函数,而是通过使用库中的类来处理复数。而在Python中,处理复数更为简洁方便。

如果你正在与其他人讨论这个话题,你可以这样表述: “The complex() function in Python is used to create a complex number (在Python中,complex()函数被用来创建一个复数)”。这个句子在美式英语中完全符合语法规则。

在《Learning Python》这本书中,作者Mark Lutz提到Python的complex()函数是一个直观和方便的工具,用于创建和处理复数。从源码角度看,Python的complex()函数调用了内部的PyComplex_FromDoubles()函数来创建复数。

以下是一个对比表格,列出了Python和C/C++在创建复数上的不同:

特性/语言PythonC/C++函数complex(real, imag)std::complex(real, imag)输入类型两个数字两个数字简易度简单相对复杂,需要包含 库

通过这些信息,你应该能更好地理解Python的complex()函数,以及它在创建和处理复数方面与C/C++的差异。

4. 将对象x转换为不同的字符串格式

在Python中,我们经常需要将非字符串类型的对象转换为字符串格式,这在数据处理,日志记录,错误调试等多种场景下都非常有用。Python提供了两种方法来实现这一目标:str() 和 repr()。下面我们将分别深入探讨这两个函数,并对比它们在C++中的相似实现。

4.1 repr(x):将对象 x 转换为表达式字符串

在Python中,repr() 函数返回一个包含可打印字符的字符串,这个字符串如果传给内置的eval() 函数,能够产生一个表达这个对象的表达式。我们称这样的字符串为“表达式字符串”(expression string)。这个特性让 repr() 在调试和开发过程中非常有用,因为我们可以通过这个字符串重新得到原始的对象。

在与C++的对比中,Python的 repr() 与C++的 to_string() 函数有类似的功能。但是C++的 to_string() 只能作用于数字类型,而Python的 repr() 可以作用于任何类型,这使得Python在处理不同类型数据时更加灵活。

下面是一个简单的例子:

# Python x = [1, 2, 3, 4, 5] print(repr(x))

在这个例子中,repr() 会返回字符串 ‘[1, 2, 3, 4, 5]’。

// C++ int x[] = {1, 2, 3, 4, 5}; std::string x_str = std::to_string(x[0]);

在C++的例子中,to_string() 只能将数组的第一个元素转换为字符串。

在英语口语中,我们通常会说 “The repr function in Python returns a string that represents a printable version of an object.”(Python的repr函数返回一个表示对象可打印版本的字符串)

以下是repr()函数与其它函数的比较,总结在Markdown表格中:

函数描述示例repr()返回一个表达对象的表达式字符串repr([1, 2, 3, 4, 5]) 返回 ‘[1, 2, 3, 4, 5]’str()返回对象的字符串版本,更适合人类阅读str([1, 2, 3, 4, 5]) 返回 ‘[1, 2, 3, 4, 5]’eval()解析并执行字符串中的Python表达式eval(‘[1, 2, 3, 4, 5]’) 返回 [1, 2, 3, 4, 5]

需要注意的是,对于自定义的对象类型,我们需要自己实现 repr() 函数返回的字符串,否则它会返回一个非常基

础的表达,比如 “”。这一点在C++中是类似的,如果我们希望自定义类型可以被转换为字符串,我们需要实现 toString() 函数。

在更深的层次上,Python的 repr() 函数的实现是依赖于每个对象的 repr() 方法的。也就是说,每个对象都有一个 repr() 方法,当我们调用 repr() 函数时,实际上是在调用这个对象的 repr() 方法。这一点在《Python Cookbook》一书中有详细的讨论和例子。

如果我们想要了解更多关于Python中字符串转换的深入知识,我强烈推荐阅读《Fluent Python》一书中的相关章节,该书以非常深入和全面的方式探讨了Python的各个方面。

4.2 eval(str):用来计算在字符串中的有效Python表达式,并返回一个对象

eval()函数在Python中扮演了一个非常重要的角色。这个函数可以解析和执行一个Python表达式,这个表达式是以字符串的形式给出的。如果这个字符串是一个有效的Python表达式,那么eval()函数将会计算这个表达式并返回结果。这个特性在动态生成和执行代码的情况下非常有用。

在与C++的对比中,Python的eval()函数没有直接的等价物。这是因为C++是一门静态类型语言,所有的变量在编译时都需要确定其类型,而Python则是动态类型的,允许在运行时改变变量的类型。这种动态性使得Python能够提供eval()这样的函数。

下面是一个简单的Python示例:

# Python x = "1 + 2 * 3" print(eval(x)) # 输出:7

在这个示例中,我们创建了一个包含简单算术表达式的字符串,然后使用eval()函数计算这个表达式的值。

在英语口语中,我们通常会说 “The eval function in Python evaluates a string as a Python expression and returns the result.”(Python的eval函数将字符串作为Python表达式进行评估并返回结果)。

以下是eval()函数与其它函数的比较,总结在Markdown表格中:

函数描述示例eval()解析并执行字符串中的Python表达式eval(‘1 + 2 * 3’) 返回 7repr()返回一个表达对象的表达式字符串repr([1, 2, 3, 4, 5]) 返回 ‘[1, 2, 3, 4, 5]’str()返回对象的字符串版本,更适合人类阅读str([1, 2, 3, 4, 5]) 返回 ‘[1, 2, 3, 4, 5]’

需要注意的是,eval()函数在使用时需要非常小心。因为它会执行给出的字符串中的任何Python代码,这可能会导致安全问题。因此,在使用eval()函数时,必须确保传给它的字符串是安全的。

关于Python中字符串和表达式的更深入的讨论,我推荐阅读《Fluent Python》一书中的相关章节。这本书对Python的各个方面都进行了详细且深入的讨论,是每个Python开发者的必读书籍。

5. 序列类型的转换 5.1 tuple(s):将序列s转换为一个元组

在Python中,tuple()函数(中文译为元组函数)用于将一个序列类型转换为元组。元组(Tuple)是Python的一种基本数据类型,它包含了多个值,这些值可以是不同的数据类型。Python中的元组是不可变的,这一点和C/C++中的数组有很大的区别。

一个使用tuple()函数的简单例子如下:

seq = [1, 2, 3, 4] t = tuple(seq) print(t) # 输出:(1, 2, 3, 4)

在这个例子中,我们首先创建了一个列表seq。然后,我们用tuple()函数将这个列表转换为一个元组t。当我们打印t时,我们看到的是一个元组,而不是一个列表。

需要注意的是,如果我们尝试改变元组t的内容,比如尝试为t[0]赋一个新的值,Python会抛出一个TypeError异常,因为元组是不可变的。这一点和C/C++中的数组有很大的区别,因为在C/C++中,我们可以随时更改数组的内容。

t[0] = 5 # 这将抛出一个TypeError异常

在C/C++中,我们习惯于使用数组来存储和处理一系列的值。然而在Python中,我们有更多的选项。除了元组,我们还可以使用列表,集合和字典等数据结构。而tuple()函数就提供了一种简单的方法,可以将其他序列类型的数据转换为元组。

在我们日常的英文口头交流中,我们通常会这样描述这个函数:“The tuple function converts a sequence into a tuple. The resulting tuple is immutable, which means you can’t change its contents after it’s been created. This is different from arrays in languages like C++."(元组函数将一个序列转换为元组。结果元组是不可变的,这意味着你不能在创建它之后改变其内容。这和C++等语言中的数组是不同的。)

下表总结了Python的tuple()函数和C++中数组的一些主要区别:

Aspect(方面)Python tuple() function(Python的tuple()函数)C++ Array(C++的数组)Mutability(可变性)Immutable(不可变)Mutable(可变)Data Types(数据类型)Can contain different data types(可以包含不同的数据类型)Must contain same data type(必须包含相同的数据类型)Size(大小)Determined at creation(在创建时确定)Can be resized(可以调整大小)

这一章节我们主要讲解了Python中的tuple()函数,我们从它如何将序列转换为元组开始,然后我们讨论了元组的不可变性,最后我们比较了Python中的元组和C++中的数组的区别。在接下来的章节中,我们将继续讨论Python中的其他数据类型转换函数。

5.2 list(s):将序列s转换为一个列表

在 Python 中,list()函数(中文翻译为列表函数)被用来将一个序列类型的对象转换成列表。在 Python 中,列表(List)是一个非常强大的数据类型,它能够容纳任何类型的对象,如数字、字符串甚至其他列表。

让我们来看一个使用list()函数的简单示例:

t = (1, 2, 3, 4) l = list(t) print(l) # 输出:[1, 2, 3, 4]

在这个例子中,我们首先创建了一个元组t。然后,我们使用list()函数将这个元组转换为了一个列表l。当我们打印出l时,我们可以看到它已经是一个列表,而非一个元组。

不同于元组,列表是可变的,这意味着我们可以在创建列表之后更改其内容。这在 C++ 中,同样可以通过数组或 vector 完成。

l[0] = 5 # 这将成功地改变列表的第一个元素 print(l) # 输出:[5, 2, 3, 4]

此外,我们还可以向列表添加新的元素或者从列表中移除元素,这也是列表相比于元组更为灵活的一个特性。

l.append(6) # 向列表的末尾添加新元素 print(l) # 输出:[5, 2, 3, 4, 6] l.pop(0) # 移除列表中的第一个元素 print(l) # 输出:[2, 3, 4, 6]

在日常英语口语交流中,我们可能会这样描述这个函数:“The list function in Python is used to convert a sequence into a list. The resulting list is mutable, meaning you can change its contents after it has been created. You can also add or remove elements from the list. This offers more flexibility than tuples."(Python中的list函数用于将序列转换为列表。得到的列表是可变的,这意味着在创建之后可以改变其内容。你也可以从列表中添加或移除元素,这比元组提供了更多的灵活性。)

下面的表格总结了Python的list()函数与C++中的数组和vector的主要区别:

Aspect(方面)Python list() function(Python的list()函数)C++ Array(C++的数组)C++ Vector(C++的vector)Mutability(可变性)Mutable(可变)Mutable(可变)Mutable(可变)Data Types(数据类型)Can contain different data types(可以包含不同的数据类型)Must contain same data type(必须包含相同的数据类型)Must contain same data type(必须包含相同的数据类型)Resizing(调整大小)Can be resized(可以调整大小)Fixed size(固定大小)Can be resized(可以调整大小) 5.3 set(s):将序列s转换为一个集合

在Python中,set()函数(中文可以翻译为集合函数)可以将一个序列或者其他迭代器转换为一个集合。在Python中,集合(Set)是一个无序且元素具有唯一性的数据结构。集合的这个特性使其在处理一些特定问题上,比如求交集、并集或者差集等,有着独特的优势。

下面是一个简单的使用set()函数的例子:

seq = [1, 2, 2, 3, 4] s = set(seq) print(s) # 输出:{1, 2, 3, 4}

在这个例子中,我们首先创建了一个列表seq。然后,我们用set()函数将这个列表转换为一个集合s。当我们打印s时,我们看到的是一个集合,其中没有重复的元素。

需要注意的是,集合是无序的,这意味着当我们打印集合时,它的输出顺序可能和原始列表的顺序不同。在C++中,我们可以通过使用std::set来达到类似的功能。

集合中的元素是不可变的,但是我们可以向集合中添加或删除元素:

s.add(5) # 在集合中添加新元素 print(s) # 输出:{1, 2, 3, 4, 5} s.remove(1) # 在集合中删除元素 print(s) # 输出:{2, 3, 4, 5}

在日常英语口语交流中,我们可能会这样描述这个函数:“The set function in Python is used to convert a sequence or iterable into a set. The resulting set is unordered and does not contain duplicate elements. Elements can be added or removed from the set."(Python中的set函数用于将序列或可迭代对象转换为集合。得到的集合是无序的且不包含重复元素。可以向集合中添加或移除元素。)

下表总结了Python的set()函数和C++中的std::set的一些主要区别:

Aspect(方面)Python set() function(Python的set()函数)C++ std::set(C++的std::set)Ordering(排序)Unordered(无序)Ordered(有序)Mutability(可变性)Mutable(可变)Mutable(可变)Duplicates(重复元素)Does not allow duplicates(不允许重复元素)Does not allow duplicates(不允许重复元素)

在接下来的章节中,我们将继续深入探讨Python中的其他数据类型转换函数。

6. 创建和转换字典 6.1 dict(d):创建一个字典

在Python3中,我们可以使用dict()函数创建字典,这是一种非常方便快捷的方法。这个函数接收一个键值对(key-value pair)序列作为参数,并返回一个字典对象。键值对可以是一个二元组的列表,或者是其他可迭代的键值对集合。

让我们看一个示例:

# 创建一个字典 d = [('a', 1), ('b', 2), ('c', 3)] dictionary = dict(d) print(dictionary) # 输出: {'a': 1, 'b': 2, 'c': 3}

在上面的例子中,我们传入了一个包含三个二元组的列表给dict()函数,这个函数将每个二元组转化为字典的一个键值对。

然而,当我们在C++中创建一个std::map(相当于Python中的字典)时,我们通常会使用insert方法,或者使用初始化列表创建。例如:

#include #include #include int main() { std::map map; map.insert(std::pair("a", 1)); map.insert(std::pair("b", 2)); map.insert(std::pair("c", 3)); for(const auto &p: map) { std::cout int x = 255; std::stringstream ss; ss


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有